package com.whut.utils;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.metadata.Sheet;
import com.whut.v_bo.ExcelTest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

import java.io.*;
import java.util.List;

/**
 * @author: liukang
 * @Description: excel工具类
 * @date: 2020/9/22 13:22
 * @param:
 * @return:
 */
public class ExcelUtil {

    final static Logger logger = LoggerFactory.getLogger(ExcelUtil.class);





    /**
     * 读小于1000行数据, 带样式
     * filePath 文件绝对路径
     * initSheet ：
     *      sheetNo: sheet页码，默认为1
     *      headLineMun: 从第几行开始读取数据，默认为0, 表示从第一行开始读取
     *      clazz: 返回数据List<Object> 中Object的类名
     */
    public static List<Object> readLessThan1000RowBySheet(String filePath, Sheet sheet){


        // 有个很重要的点 DemoDataListener 不能被spring管理，要每次读取excel都要new,然后里面用到spring可以构造方法传进去
        // 写法1：
        //String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        //String fileName = "C:\\Users\\Joker\\Documents\\WeChat Files\\lk941206\\FileStorage\\File\\2020-09\\在建绿化工程信息.xlsx";
        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
        //EasyExcel.read(fileName, ExcelTest.class, new ExcelTestListener()).sheet().doRead();


        if(!StringUtils.hasText(filePath)){
            return null;
        }

        InputStream fileStream = null;
        try {
            fileStream = new FileInputStream(filePath);
            return EasyExcelFactory.read(fileStream, sheet);
        } catch (FileNotFoundException e) {
            logger.info("找不到文件或文件路径错误, 文件：{}", filePath);
        }finally {
            try {
                if(fileStream != null){
                    fileStream.close();
                }
            } catch (IOException e) {
                logger.info("excel文件读取失败, 失败原因：{}", e);
            }
        }
        return null;


    }

}
